// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2006 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// =================================================================================================

import XMPPropertyInfo  from './properties/XMPPropertyInfo';

/**
 * Interface for the <code>XMPMeta</code> iteration services.
 * <code>XMPIterator</code> provides a uniform means to iterate over the
 * schema and properties within an XMP object.
 */
export default interface XMPIterator {
    /**
     * Skip the subtree below the current node when <code>next()</code> is
     * called.
     */
    skipSubtree(): void;

    /**
     * Skip the subtree below and remaining siblings of the current node when
     * <code>next()</code> is called.
     */
    skipSiblings(): void;

    /**
     * Returns true if the iteration has more elements.
     * @return true if the iteration has more elements
     */
    hasNext(): boolean;

    /**
     * Returns the next element in the iteration.
     * @return the next element in the iteration
     */
    next(): XMPPropertyInfo;

    /**
     * Removes from the underlying collection the last element returned by this iterator.
     */
    remove(): void;
}